package com.killer.view;

import org.apache.dubbo.common.utils.StringUtils;

/**
 * 用于记录请求信息
 */
public class RequestContext {

    /**
     * 唯一id,用于识别唯一请求
     */
    private String uuid;

    /**
     * 请求时间点
     */
    private Long requestTime;

    @Override
    public int hashCode() {
        return uuid.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        //重写equals方法  uuid一样代表同一个对象
        if(this == obj){
            return true;//地址相等
        }

        if(obj == null){
            return false;//非空性：对于任意非空引用x，x.equals(null)应该返回false。
        }

        if(obj instanceof RequestContext){
            RequestContext other = (RequestContext) obj;
            //需要比较的字段相等，则这两个对象相等
            if (StringUtils.isEquals(this.uuid, other.uuid)) {
                return true;
            }
        }
        return false;
    }

    public RequestContext(String uuid, Long requestTime) {
        this.uuid=uuid;
        this.requestTime=requestTime;
    }

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public long getRequestTime() {
        return requestTime;
    }

    public void setRequestTime(long requestTime) {
        this.requestTime = requestTime;
    }

    /**
     * 超过一分钟则认为超时，不需要统计
     * @return
     */
    public boolean checkTimeOut() {
        return System.currentTimeMillis()-requestTime>60000;
    }
}
